package br.com.manutencao.managedbeans;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;


import br.com.manutencao.entities.Funcionario;
import br.com.manutencao.repositories.Repository;

@ManagedBean(name="funcionario")
@SessionScoped
public class FuncionarioBean implements Serializable{
	
	/**
	 * 
	 */
	 
	Repository<Funcionario> repositorio = new Repository<Funcionario>(Funcionario.class);
	
	private static final long serialVersionUID = 1L;

	private String cargo;
	
	private String nome;
	
	private List<Funcionario> tabelaFuncionarios = new ArrayList<Funcionario>();
	
	private Integer funcionarioId;
		
	private Collection<SelectItem> buscaFuncionarios;
	
	private Funcionario funcionario = new Funcionario();
	
	public String salvaFuncionario(){
					
			Funcionario funcionario = new Funcionario();
			funcionario.setCargo(cargo);
			funcionario.setNome(nome);		
			repositorio.adiciona(funcionario);
			
			return "funcionario-success";
				
	}

	public String apagaFuncionario() {
		Funcionario funcionario = new Funcionario();
		
		funcionario = repositorio.buscaPorId(funcionarioId);
		
		repositorio.delete(funcionario);

		return "funcionario-success-rem";
	}
	
	public String alteraAction(){
		
		funcionario.setNome(nome);
		funcionario.setCargo(cargo);
		repositorio.altera(funcionario);
		
		return "funcionario-success";
	}
	
	public String alteraForm(){
		funcionario = repositorio.buscaPorId(funcionarioId);
		
		nome = funcionario.getNome();
		cargo = funcionario.getCargo();
		
		return "funcionario-form-alt";
	}
	//getters and setters
	
	
	
	public String getCargo() {
		return cargo;
	}

	public Integer getFuncionarioId() {
		return funcionarioId;
	}

	public void setFuncionarioId(Integer funcionarioId) {
		this.funcionarioId = funcionarioId;
	}

	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	public void setCargo(String cargo) {
		this.cargo = cargo;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public void setBuscaFuncionarios(Collection<SelectItem> buscaFuncionarios) {
		this.buscaFuncionarios = buscaFuncionarios;
	}
	
	public Collection<SelectItem> getBuscaFuncionarios() {

		Collection<SelectItem> funcionariosSelect = new ArrayList<SelectItem>();
		
		Collection<Funcionario> funcionarios = repositorio.buscaTodos();
		for (Funcionario funcionario : funcionarios) {
			SelectItem select = new SelectItem();
			select.setLabel(funcionario.getNome());
			select.setValue(funcionario.getId());
			funcionariosSelect.add(select);			
		}
		
		return funcionariosSelect;
	}

	public List<Funcionario> getTabelaFuncionarios() {
		tabelaFuncionarios = (List<Funcionario>) repositorio.buscaTodos();
		return tabelaFuncionarios;
	}

	public void setTabelaFuncionarios(List<Funcionario> tabelaFuncionarios) {
		this.tabelaFuncionarios = tabelaFuncionarios;
	}
	
	

}
